% 使用lsqnonlin函数辨识：用一个文件书写，进行非线性最小二乘拟合
clear;
clc;
close all;
x = [0.1 0.5 1 1.5 2.5 4.5 6 7];                        % 原函数的输入
y = [29.45 26.65 23.52 20.76 16.16 9.81 6.74 5.25];     % 原函数的输出
%fun=@(a)(a(1)*exp(-a(2)*x)-y);                          % 定义函数，其中a待辨识的参数
fun = @(a) residual_cal(a,x,y);
a0 = [30 0.2];                                          % 待辨识参数的初值
t= lsqnonlin(fun,a0)                                    % 非线性最小二乘辨识
 
% 将辨识结果代入函数中
xx = 0:0.2:7;
yy = t(1)*exp(-t(2).*xx);
 
figure(1)
plot(xx,yy,'r-')
hold on
plot(x,y,'bp')
function [residual]=residual_cal(a,x,y)
    residual = a(1)*exp(-a(2)*x)-y;
end